Page({
  data: {
    musicList: [], // 用于存储从云数据库获取的音乐列表
    currentMusicIndex: 0, // 当前播放音乐的索引
    playing: false, // 是否正在播放音乐
    audioContext: null, // 音频上下文对象
    loading: true, // 控制加载状态
    showLyricsModal: false, // 是否显示歌词弹窗
    currentSong: {}, // 当前歌曲信息，包括歌词
    currentMusicName: '', // 新增用于显示当前播放歌曲歌名的字段
    showAddSongModal: false // 新增控制添加歌曲弹窗显示的变量
  },

  onLoad: function () {
    this.getMusicListFromCloud(); // 页面加载时获取音乐列表
    this.initAudioContext(); // 初始化音频上下文
  },

  initAudioContext: function () {
    // 初始化音频上下文
    this.setData({
      audioContext: wx.createInnerAudioContext()
    });
    const audioContext = this.data.audioContext;
    audioContext.onPlay(() => {
      console.log('音乐开始播放');
      this.setData({ playing: true });
    });
    audioContext.onPause(() => {
      console.log('音乐暂停播放');
      this.setData({ playing: false });
    });
    audioContext.onStop(() => {
      console.log('音乐停止播放');
      this.setData({ playing: false });
    });
    audioContext.onEnded(() => {
      console.log('音乐播放结束');
      this.nextMusic(); // 自动播放下一首
    });
    audioContext.onError((res) => {
      console.log('音乐播放错误:', res);
    });
  },

  getMusicListFromCloud: function () {
    const db = wx.cloud.database(); // 获取数据库引用
    const musicCollection = db.collection('music'); // 获取音乐集合的引用

    musicCollection.get({
      success: res => {
        // 数据获取成功的回调
        console.log('音乐列表获取成功', res);
        this.setData({
          musicList: res.data,
          loading: false // 数据加载完成后，设置loading为false
        });
      },
      fail: err => {
        // 数据获取失败的回调
        console.error('音乐列表获取失败', err);
        this.setData({
          loading: false // 失败后也设置loading为false
        });
      }
    });
  },

  // 播放音乐的逻辑
  playMusic: function (e) {
    const file_id = e.currentTarget.dataset.file_id;
    if (!file_id) {
      wx.showToast({
        title: '音乐文件ID不存在',
        icon: 'none'
      });
      return;
    }
    const musicFilePath = file_id;

    const audioContext = this.data.audioContext;
    audioContext.src = musicFilePath;
    const currentMusicIndex = this.data.musicList.findIndex(item => item.file_id === file_id);
    this.setData({ currentMusicIndex, playing: true });

    // 获取当前播放歌曲的歌名并更新显示字段
    const currentMusic = this.data.musicList[currentMusicIndex];
    if (currentMusic) {
      this.setData({ currentMusicName: currentMusic.name });
    }

    audioContext.play();
  },

  showLyrics: function (e) {
    const musicId = e.currentTarget.dataset.id; // 获取当前点击的歌曲ID
    const currentSong = this.data.musicList.find(item => item._id === musicId); // 根据_id查找歌曲
    if (currentSong) {
      this.setData({
        currentSong: currentSong, // 更新当前歌曲信息
        showLyricsModal: true, // 显示歌词弹窗
      });
    } else {
      console.error('Song not found'); // 如果没有找到歌曲，输出错误信息
    }
  },

  hideLyrics: function () {
    // 隐藏歌词的逻辑
    this.setData({
      showLyricsModal: false,
    });
  },

  playPrevious: function () {
    let currentIndex = this.data.currentMusicIndex;
    const musicListLength = this.data.musicList.length;
    if (currentIndex === 0) {
      currentIndex = musicListLength - 1; // 如果是第一首，则播放最后一首
    } else {
      currentIndex--; // 否则播放前一首
    }
    this.setData({ currentMusicIndex: currentIndex });
    this.playCurrentMusic();
    // 添加更新歌曲名显示的逻辑
    const currentMusic = this.data.musicList[currentIndex];
    if (currentMusic) {
      this.setData({ currentMusicName: currentMusic.name });
    }
  },

  playPause: function () {
    // 播放或暂停音乐的逻辑
    const audioContext = this.data.audioContext;
    const playing = this.data.playing;
    if (playing) {
      audioContext.pause(); // 如果正在播放，则暂停
    } else {
      this.playCurrentMusic(); // 如果已暂停，则播放
    }
    this.setData({ playing:!playing }); // 更新播放状态
  },

  playNext: function () {
    let currentIndex = this.data.currentMusicIndex;
    const musicListLength = this.data.musicList.length;
    currentIndex = (currentIndex + 1) % musicListLength;
    this.setData({ currentMusicIndex: currentIndex });
    this.playCurrentMusic();
    // 更新歌曲名显示
    const currentMusic = this.data.musicList[currentIndex];
    if (currentMusic) {
      this.setData({ currentMusicName: currentMusic.name });
    }
  },

  playCurrentMusic: function () {
    const currentMusic = this.data.musicList[this.data.currentMusicIndex];
    if (currentMusic) {
      const audioContext = this.data.audioContext;
      audioContext.src = currentMusic.file_id;
      audioContext.play();
      this.setData({ playing: true });
      // 更新当前播放歌曲名
      this.setData({ currentMusicName: currentMusic.name });
    }
  },

  nextMusic: function () {
    // 自动播放下一首音乐
    this.playNext();
  },

  // 显示添加歌曲弹窗的函数
  showAddSongModal: function () {
    this.setData({
      showAddSongModal: true
    });
  },

  // 隐藏添加歌曲弹窗的函数
  hideAddSongModal: function () {
    this.setData({
      showAddSongModal: false
    });
  },

  // 处理添加歌曲的函数
  addSong: function (e) {
    const db = wx.cloud.database();
    const musicCollection = db.collection('music');
    const songData = e.detail.value;

    musicCollection.add({
      data: songData,
      success: res => {
        wx.showToast({
          title: '歌曲添加成功',
          icon: 'success'
        });
        this.hideAddSongModal();
        this.getMusicListFromCloud(); // 添加成功后重新获取音乐列表更新页面
      },
      fail: err => {
        wx.showToast({
          title: '歌曲添加失败',
          icon: 'error'
        });
        console.error('歌曲添加失败', err);
      }
    });
  }
});